static char* opt_labels = NULL;
static char* opt_max_position_points = NULL;
static char* opt_rotate_colors = NULL;
+static char* opt_precision = NULL;
static int export_lines;
static int export_points;
static int rotate_colors;
static int line_width;
static int html_encrypt;
+static int precision;
static Waypoint* wpt_tmp;
static int wpt_tmp_queued;
#define AUTOFORMATTING_OFF(AF) bool AF=writer->autoFormatting(); writer->setAutoFormatting(false);
#define AUTOFORMATTING_RESTORE(AF) writer->setAutoFormatting(af);
+#define DEFAULT_PRECISION "6"
// Icons provided and hosted by Google. Used with permission.
#define ICON_BASE "http://earth.google.com/images/kml-icons/"
"Rotate colors for tracks and routes (default automatic)",
NULL, ARGTYPE_FLOAT, "0", "360"
},
+ {
+ "prec", &opt_precision,
+ "Precision of coordinates, number of decimals",
+ DEFAULT_PRECISION, ARGTYPE_INT, ARG_NOMINMAX
+ },
ARG_TERMINATOR
};
{
if (kml_altitude_known(waypointp)) {
writer->writeTextElement("coordinates",
- QString::number(waypointp->longitude, 'f', 6) + QString(",") +
- QString::number(waypointp->latitude, 'f', 6) + QString(",") +
+ QString::number(waypointp->longitude, 'f', precision) + QString(",") +
+ QString::number(waypointp->latitude, 'f', precision) + QString(",") +
QString::number(waypointp->altitude, 'f', 2)
);
} else {
writer->writeTextElement("coordinates",
- QString::number(waypointp->longitude, 'f', 6) + QString(",") +
- QString::number(waypointp->latitude, 'f', 6)
+ QString::number(waypointp->longitude, 'f', precision) + QString(",") +
+ QString::number(waypointp->latitude, 'f', precision)
);
}
}
static void kml_output_lookat(const Waypoint* waypointp)
{
writer->writeStartElement("LookAt");
- writer->writeTextElement("longitude", QString::number(waypointp->longitude, 'f', 6));
- writer->writeTextElement("latitude", QString::number(waypointp->latitude, 'f', 6));
+ writer->writeTextElement("longitude", QString::number(waypointp->longitude, 'f', precision));
+ writer->writeTextElement("latitude", QString::number(waypointp->latitude, 'f', precision));
writer->writeTextElement("tilt","66");
writer->writeEndElement(); // Close LookAt tag
}
hwriter.writeCharacters("\n");
hwriter.writeStartElement("table");
- kml_td(hwriter, QString("Longitude: %1 ").arg(QString::number(pt->longitude, 'f', 6)));
- kml_td(hwriter, QString("Latitude: %1 ").arg(QString::number(pt->latitude, 'f', 6)));
+ kml_td(hwriter, QString("Longitude: %1 ").arg(QString::number(pt->longitude, 'f', precision)));
+ kml_td(hwriter, QString("Latitude: %1 ").arg(QString::number(pt->latitude, 'f', precision)));
if (kml_altitude_known(pt)) {
kml_td(hwriter, QString("Altitude: %1 %2 ").arg(QString::number(alt, 'f', 3)).arg(alt_units));
writer->writeCharacters("\n");
}
if (kml_altitude_known(tpt)) {
- writer->writeCharacters(QString::number(tpt->longitude, 'f', 6) + QString(",") +
- QString::number(tpt->latitude, 'f', 6) + QString(",") +
+ writer->writeCharacters(QString::number(tpt->longitude, 'f', precision) + QString(",") +
+ QString::number(tpt->latitude, 'f', precision) + QString(",") +
QString::number(tpt->altitude, 'f', 2) + QString("\n")
);
} else {
- writer->writeCharacters(QString::number(tpt->longitude, 'f', 6) + QString(",") +
- QString::number(tpt->latitude, 'f', 6) + QString("\n")
+ writer->writeCharacters(QString::number(tpt->longitude, 'f', precision) + QString(",") +
+ QString::number(tpt->latitude, 'f', precision) + QString("\n")
);
}
}
#if 0 // Experimental
if (realtime_positioning) {
writer->wrteStartTag("LookAt");
- writer->writeTextElement("longitude", QString::number(waypointp->longitude, 'f', 6);
- writer->writeTextElement("latitude", QString::number(waypointp->latitude, 'f', 6);
+ writer->writeTextElement("longitude", QString::number(waypointp->longitude, 'f', precision);
+ writer->writeTextElement("latitude", QString::number(waypointp->latitude, 'f', precision);
writer->writeTextElement("altitude", "1000");
writer->writeEndElement(); // Close LookAt tag
}
if (kml_altitude_known(tpt)) {
writer->writeTextElement("gx:coord",
- QString::number(tpt->longitude, 'f', 6) + QString(" ") +
- QString::number(tpt->latitude, 'f', 6) + QString(" ") +
+ QString::number(tpt->longitude, 'f', precision) + QString(" ") +
+ QString::number(tpt->latitude, 'f', precision) + QString(" ") +
QString::number(tpt->altitude, 'f', 2)
);
} else {
writer->writeTextElement("gx:coord",
- QString::number(tpt->longitude, 'f', 6) + QString(" ") +
- QString::number(tpt->latitude, 'f', 6)
+ QString::number(tpt->longitude, 'f', precision) + QString(" ") +
+ QString::number(tpt->latitude, 'f', precision)
);
}
kml_bounds.min_lon = -kml_bounds.max_lon;
}
- writer->writeTextElement("longitude", QString::number((kml_bounds.min_lon + kml_bounds.max_lon) / 2, 'f', 6));
- writer->writeTextElement("latitude", QString::number((kml_bounds.min_lat + kml_bounds.max_lat) / 2, 'f', 6));
+ writer->writeTextElement("longitude", QString::number((kml_bounds.min_lon + kml_bounds.max_lon) / 2, 'f', precision));
+ writer->writeTextElement("latitude", QString::number((kml_bounds.min_lat + kml_bounds.max_lat) / 2, 'f', precision));
// It turns out the length of the diagonal of the bounding box gives us a
// reasonable guess for setting the camera altitude.
trackdata = (!! strcmp("0", opt_trackdata));
trackdirection = (!! strcmp("0", opt_trackdirection));
line_width = atol(opt_line_width);
+ precision = atol(opt_precision);
writer->writeStartDocument();
// FIXME: This write of a blank line is needed for Qt 4.6 (as on Centos 6.3)